﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using ucntemaxp.Ctr;
using ucntemaxp.DB;


namespace ucntemaxp
{
    public partial class Form1 : Form
    {
        private CtrRabat ctrRab;
        private CtrEvent ctrEv;
        private CtrKunde ctrKun;

        public Form1()
        {
            InitializeComponent();
            ctrRab = new CtrRabat();
            ctrEv = new CtrEvent();
            ctrKun = new CtrKunde();
            AddValues();
        }

        #region Booking




        private void sFuldSal_Click(object sender, EventArgs e)
        {
            foreach (CheckBox c in salList)
            {
                c.Checked = true;
            }
        }


        private void vælgForestilling_Click(object sender, EventArgs e)
        {
            try
            {
                foreach (CheckBox cb in bookingList)
                {
                    groupBox1.Controls.Remove(cb);
                }
                bookingList.Clear();

                string tidspunkt = dataGridView2.CurrentCell.Value.ToString();
                CtrForestilling ctrFor = new CtrForestilling();
                CtrFilm ctrfilm = new CtrFilm();
                Forestilling f = (Forestilling)dataGridView2.CurrentCell.Tag;

                try
                {
                    CtrSale ctrSal = new CtrSale();
                    List<Sæde> list = ctrSal.findAlleSæderTilForestilling(f.Forestillingid, f.Saleid);
                    int antalPladser = 0;
                    int optagedePladser = 0;
                    foreach (Sæde s in list)
                    {
                        int ver = Convert.ToInt32(s.Plads.ToString().Substring(0, 1)) * 20;
                        int hor = Convert.ToInt32(s.Plads.ToString().Substring(1, 1)) * 40;
                        CheckBox sæ = new System.Windows.Forms.CheckBox();
                        this.groupBox1.Controls.Add(sæ);
                        sæ.AutoSize = true;
                        sæ.Location = new System.Drawing.Point(42 + hor, 8 + ver);
                        sæ.Name = s.Plads.ToString();
                        sæ.Size = new System.Drawing.Size(80, 17);
                        sæ.TabIndex = 72;
                        sæ.Text = s.Plads.ToString();
                        sæ.UseVisualStyleBackColor = true;
                        bookingList.Add(sæ);
                        antalPladser++;
                        if (s.Sædestatus.Equals("Optaget"))
                        {
                            optagedePladser++;
                            sæ.Checked = true;
                            sæ.Enabled = false;
                        }
                    }
                    bPris.Text = f.Typeevent.Pris.ToString();
                    sForestillingsid.Text = f.Forestillingid.ToString();
                    bSalnr.Text = f.Sale.Saleid.ToString();
                    ledige.Text = antalPladser - optagedePladser + "/" + antalPladser;
                    sFilmNavn.Text = f.Film.Titel;
                    bFilmNavn.Text = f.Film.Titel;
                    bTidspunkt.Text = f.Tidspunkt;
                    sTidspunkt.Text = f.Tidspunkt;
                }
                catch (Exception)
                {
                    throw;
                }

                BookingSubTabs.SelectedIndex = 2;
            }
            catch (Exception)
            {
                MessageBox.Show("Der opstod en fejl");
            }

        }

        private void updateFilmoversigt()
        {
            dataGridView2.Columns.Clear();
            dataGridView2.Rows.Clear();
            DateTime dato = filmDato.Value;
            // Initialize the button column.


            CtrFilm ctrFil = new CtrFilm();
            int filmid = ctrFil.findFilm(filmCollection.SelectedItem.ToString()).Filmid;

            CtrForestilling ctrfor = new CtrForestilling();
            dataGridView2.Rows.Clear();
            dataGridView2.Columns.Clear();
            int dage = 0;


            while (dage < 7)
            {

                DateTime dato1 = dato.AddDays(dage);

                List<Forestilling> flist = ctrfor.findFilmForestillinger(filmid, dato1);

                DataGridViewButtonColumn currentColumn =
                new DataGridViewButtonColumn();
                currentColumn.Name = dato1.ToString();
                currentColumn.HeaderText = dato1.ToShortDateString();
                currentColumn.Text = "View Details";
                dataGridView2.Columns.Add(currentColumn);
                if (dage == 0)
                {
                    dataGridView2.Rows.Add();
                    dataGridView2.Rows.Add();
                    dataGridView2.Rows.Add();
                    dataGridView2.Rows.Add();
                    dataGridView2.Rows.Add();
                    dataGridView2.Rows.Add();
                }

                //    dataGridView2.Rows[dage].Cells.Clear();
                int count = 0;
                foreach (Forestilling f in flist)
                {
                    dataGridView2.Rows[count].Cells[dage].Value = f.Tidspunkt;
                    dataGridView2.Rows[count].Cells[dage].Tag = f;
                    count++;
                }
                dage++;
            }
        }


        private Boolean checkAvailability()
        {
            CtrSale ctrSal = new CtrSale();
            List<Sæde> list = ctrSal.findAlleSæderTilForestilling(Convert.ToInt32(sForestillingsid.Text), Convert.ToInt32(bSalnr.Text));
            foreach (Sæde s in list)
            {
                foreach (CheckBox c in bookingList)
                {
                    if (s.Plads.ToString() == c.Name && s.Sædestatus == "Optaget" && c.Enabled == true && c.Checked == true)
                    {
                        MessageBox.Show("Plads : " + c.Name + " Er allerede taget.");
                        refreshSal();
                        return false;
                    }
                }
            }
            return true;

        }

        private void annullerKøb_Click(object sender, EventArgs e)
        {
            try
            {
                if (MessageBox.Show("Er du sikker på du vil slette?", "Confirm delete", MessageBoxButtons.YesNo) == DialogResult.Yes)
                {
                    Booking b = (Booking)dataGridView1.CurrentRow.Tag;
                    CtrBooking ctrBoo = new CtrBooking();
                    ctrBoo.deleteBooking(b);
                    updateDataGridView1();
                }
            }
            catch (Exception)
            {
                MessageBox.Show("Der opstod en fejl");
            }
            
        }

        private void btn_booking_search_Click(object sender, EventArgs e)
        {
            updateDataGridView1();
        }

        private void updateDataGridView1()
        {
            try
            {
                if(dataGridView1.Rows.Count > 1)
                {
                    dataGridView1.Rows.Clear();
                }
                CtrBooking ctrBoo = new CtrBooking();
                if (ctrBoo.findBookingsPåKunde(bTlfnr.Text) != null)
                {
                    List<Booking> bList = ctrBoo.findBookingsPåKunde(bTlfnr.Text);
                    foreach (Booking b in bList)
                    {
                        int row = dataGridView1.Rows.Add();
                        dataGridView1.Rows[row].Cells[0].Value = b.Kunde.Tlf;
                        dataGridView1.Rows[row].Cells[1].Value = b.Kunde.Navn;
                        dataGridView1.Rows[row].Cells[2].Value = b.Forestilling.Film.Titel;
                        dataGridView1.Rows[row].Cells[3].Value = b.Forestilling.Dato.Value.ToShortDateString() + " - " + b.Forestilling.Tidspunkt;
                        dataGridView1.Rows[row].Cells[4].Value = b.Forestilling.Sale.Saleid;
                        dataGridView1.Rows[row].Cells[5].Value = b.Sæder;
                        dataGridView1.Rows[row].Tag = b;
                    }
                }
                else
                {
                    MessageBox.Show("Der blev ikke fundet nogle bookings på dette nummer");
                }
            }
            catch (Exception)
            {
                MessageBox.Show("Der opstod en fejl");
            }
            
        }

        private void button9_Click(object sender, EventArgs e)
        {
            try
            {
                CtrSale ctrSal = new CtrSale();
                List<Sæde> list = ctrSal.findAlleSæderTilForestilling(Convert.ToInt32(bSalnr.Text), 1);
                int antalPladser = 0;
                int optagedePladser = 0;
                foreach (Sæde s in list)
                {
                    int ver = Convert.ToInt32(s.Plads.ToString().Substring(0, 1)) * 20;
                    int hor = Convert.ToInt32(s.Plads.ToString().Substring(1, 1)) * 40;
                    CheckBox sæ = new System.Windows.Forms.CheckBox();
                    this.groupBox1.Controls.Add(sæ);
                    sæ.AutoSize = true;
                    sæ.Location = new System.Drawing.Point(42 + hor, 8 + ver);
                    sæ.Name = s.Plads.ToString();
                    sæ.Size = new System.Drawing.Size(80, 17);
                    sæ.TabIndex = 72;
                    sæ.Text = s.Plads.ToString();
                    sæ.UseVisualStyleBackColor = true;
                    bookingList.Add(sæ);
                    antalPladser++;
                    if (s.Sædestatus.Equals("Optaget"))
                    {
                        optagedePladser++;
                        sæ.Checked = true;
                        sæ.Enabled = false;
                    }
                }

                ledige.Text = antalPladser - optagedePladser +"/"+ antalPladser;
            }
            catch (Exception)
            {
                MessageBox.Show("En af dine værdier er forkerte");
            }
        }

        private List<CheckBox> bookingList = new List<CheckBox>();

        private void bNulstil_Click(object sender, EventArgs e)
        {
            foreach(CheckBox c in bookingList)
            {
                groupBox1.Controls.Remove(c);
            }
            bookingList.Clear();
        }

        private void bBook_Click(object sender, EventArgs e)
        {
            try
            {
                if(checkAvailability()==true)
                {
                    int valgtePladser = 0;
                    int count = 0;
                    List<int> booksæder = new List<int>();
                    foreach (CheckBox c in bookingList)
                    {
                        if (c.Enabled && c.Checked)
                        {
                            valgtePladser++;
                            Label lb = new Label();
                            this.groupBox4.Controls.Add(lb);
                            lb.AutoSize = true;
                            lb.Location = new System.Drawing.Point(9, 89 + count);
                            lb.Name = "label" + c.Name;
                            lb.Size = new System.Drawing.Size(41, 13);
                            lb.TabIndex = 10;
                            lb.Text = bSalnr.Text;

                            Label lb2 = new Label();
                            this.groupBox4.Controls.Add(lb2);
                            lb2.AutoSize = true;
                            lb2.Location = new System.Drawing.Point(134, 89 + count);
                            lb2.Name = "label" + c.Name;
                            lb2.Size = new System.Drawing.Size(41, 13);
                            lb2.TabIndex = 11;
                            lb2.Text = c.Name.Substring(0, 1);

                            Label lb3 = new Label();
                            this.groupBox4.Controls.Add(lb3);
                            lb3.AutoSize = true;
                            lb3.Location = new System.Drawing.Point(256, 89 + count);
                            lb3.Name = "label" + c.Name;
                            lb3.Size = new System.Drawing.Size(41, 13);
                            lb3.TabIndex = 11;
                            lb3.Text = c.Name.Substring(1, 1);
                            booksæder.Add(Convert.ToInt32(c.Name));
                            count += 20;
                        }

                    }
                    double prpris = Convert.ToDouble(bPris.Text);
                    double tPris = booksæder.Count;

                    bTotalPris.Text = (prpris * tPris).ToString();
                    CtrBooking ctrBok = new CtrBooking();
                    if (sKundeId.Text == "-")
                    {
                        ctrBok.addBooking("Bestilt", booksæder.Count, null, Convert.ToInt32(sForestillingsid.Text));
                        MessageBox.Show("Booking gennemført");
                    }
                    else
                    {
                        ctrBok.addBooking("Bestilt", booksæder.Count, Convert.ToInt32(sKundeId.Text), Convert.ToInt32(sForestillingsid.Text));
                        MessageBox.Show("Booking gennemført");
                    }
                    ctrBok.updateSæde(booksæder, "Optaget", Convert.ToInt32(sForestillingsid.Text));

                    
                }
                else
                {
                   // Refresh
                }
            }
            catch (Exception)
            {
                MessageBox.Show("En af dine værdier er forkerte");
            }
            
            
        }

        private void refreshSal()
        {
            foreach (CheckBox cb in bookingList)
            {
                groupBox1.Controls.Remove(cb);
            }
            bookingList.Clear();

            try
            {
                CtrSale ctrSal = new CtrSale();
                List<Sæde> list = ctrSal.findAlleSæderTilForestilling(Convert.ToInt32(sForestillingsid.Text), Convert.ToInt32(bSalnr.Text));
                int antalPladser = 0;
                int optagedePladser = 0;
                foreach (Sæde s in list)
                {
                    int ver = Convert.ToInt32(s.Plads.ToString().Substring(0, 1)) * 20;
                    int hor = Convert.ToInt32(s.Plads.ToString().Substring(1, 1)) * 40;
                    CheckBox sæ = new System.Windows.Forms.CheckBox();
                    this.groupBox1.Controls.Add(sæ);
                    sæ.AutoSize = true;
                    sæ.Location = new System.Drawing.Point(42 + hor, 8 + ver);
                    sæ.Name = s.Plads.ToString();
                    sæ.Size = new System.Drawing.Size(80, 17);
                    sæ.TabIndex = 72;
                    sæ.Text = s.Plads.ToString();
                    sæ.UseVisualStyleBackColor = true;
                    bookingList.Add(sæ);
                    antalPladser++;
                    if (s.Sædestatus.Equals("Optaget"))
                    {
                        optagedePladser++;
                        sæ.Checked = true;
                        sæ.Enabled = false;
                    }
                }
                ledige.Text = antalPladser - optagedePladser + "/" + antalPladser;

            }
            catch (Exception)
            {
                throw;
            }

            BookingSubTabs.SelectedIndex = 2;
        }
       

        #endregion

        #region Film
        private void button8_Click(object sender, EventArgs e)
        {
            try
            {
                CtrFilm ctrf = new CtrFilm();
                string titel = txt_titel.Text;

                if (ctrf.checkTitel(titel))
                {
                    MessageBox.Show("En film med denne titel eksisterer allerede");
                }
                else if (txt_timer.Text.Length != 1 || txt_min.Text.Length > 2)
                {
                    MessageBox.Show("Timer skal angives med ét tal og minuter skal angives med et eller to tal");
                }
                else
                {
                    try
                    {
                        decimal stjerner = decimal.Parse(txt_stjerne.Text);
                        if(txt_titel.Text.Trim()=="")
                        {
                            MessageBox.Show("Filmen skal have en titel");
                        }
                        else if(Convert.ToInt32(txt_timer.Text) < 0)
                        {
                            MessageBox.Show("Timer skal angives med et positivt tal");
                        }
                        else if (Convert.ToInt32(txt_min.Text) < 0 || Convert.ToInt32(txt_min.Text) > 60)
                        {
                            MessageBox.Show("Minuter skal angives med et tal fra 1-60");
                        }
                        else if (txt_min.Text.Length == 1)
                        {
                            txt_min.Text = "0" + txt_min.Text;
                        }
                        else if (txt_min.Text.Length == 0)
                        {
                            txt_min.Text = "00";
                        }
                        if (stjerner > 10 || stjerner < 0)
                        {
                            MessageBox.Show("Stjerner skal være mellem 0 og 10");
                        }
                        else
                        {
                            string spillelængde = "0" + txt_timer.Text + " timer " + txt_min.Text + " min";
                            string aldersgrænse = txt_ag.Text;
                        
                            DateTime premieredato;
                            premieredato = new DateTime();
                            premieredato = dateTimePickerP.Value;
                            ctrf.addFilm(titel, spillelængde, aldersgrænse, stjerner, premieredato);
                            MessageBox.Show("Film oprettet");
                            txt_titel.Clear();
                            txt_timer.Clear();
                            txt_min.Clear();
                            txt_ag.Clear();
                            txt_stjerne.Clear();
                            fillFilmOversigtData();
                        }
                    }
                    catch (FormatException ex)
                    {
                        MessageBox.Show("Stjerner og tidspunkt skal være tal");
                    }
            }
            }
            catch (Exception)
            {
                MessageBox.Show("En af dine værdier er forkerte");
            }
            
            
        }

        private void filmCollection_SelectedIndexChanged(object sender, EventArgs e)
        {
            updateFilmoversigt();
        }

        public void fillFilmOversigtData()
        {
            FilmOversigt.Rows.Clear();
            CtrFilm ctrf = new CtrFilm();
            List<Film> flist = ctrf.findAlleFilm();
            foreach (Film f in flist)
            {
                int n = FilmOversigt.Rows.Add();
                FilmOversigt.Rows[n].Cells[0].Value = f.Titel;
                FilmOversigt.Rows[n].Cells[1].Value = f.SpilleLængde;
                FilmOversigt.Rows[n].Cells[2].Value = f.AldersGrænse;
                FilmOversigt.Rows[n].Cells[3].Value = f.Stjerner;
                FilmOversigt.Rows[n].Cells[4].Value = f.PremiereDato;
            }
        }

        private void button10_Click(object sender, EventArgs e)
        {
            try
            {
                CtrForestilling ctrfof = new CtrForestilling();
                CtrFilm ctrfif = new CtrFilm();
                int filmid = ctrfif.findFilm(FilmOversigt.CurrentRow.Cells[0].Value.ToString()).Filmid;
                ctrfof.removeAllForestilling(FilmOversigt.CurrentRow.Cells[0].Value.ToString());
                ctrfif.removeFilm(ctrfif.findFilm(FilmOversigt.CurrentRow.Cells[0].Value.ToString()).Filmid);
                FilmOversigt.Rows.Remove(FilmOversigt.CurrentRow);
                fillDataKalender();
                MessageBox.Show("Filmen blev slettet");
            }
            catch (Exception)
            {
                MessageBox.Show("Der opstod en fejl");
            }
            
        }

        private void filmDato_ValueChanged(object sender, EventArgs e)
        {
            updateFilmoversigt();
        }


        #endregion

        #region Kunde

        private void nuværendeDato_Click_1(object sender, EventArgs e)
        {
            DateTime dt = DateTime.Today;
            string nuværende = dt.ToShortDateString();
            kOprettet.Text = nuværende;
        }

        private void findKunde_Click_1(object sender, EventArgs e)
        {
            try
            {
                Kunde k = ctrKun.findKunde(int.Parse(kTlf.Text.ToString()));
                kId.Text = k.Kundeid.ToString();
                kNavn.Text = k.Navn;
                kAdresse.Text = k.Adresse;
                kEmail.Text = k.Email;
                kTlf.Text = k.Tlf.ToString();
                kKøn.SelectedItem = k.Køn;
                kFødselsdato.Text = k.Fødselsdato;
                kTæller.Text = k.Tæller.ToString();
                kOprettet.Text = k.Oprettelsesdato.ToString();
                kMedlemstype.SelectedItem = k.Rabat.Navn;
            }
            catch (Exception)
            {
                
                MessageBox.Show("En af dine værdier er forkerte");
            }
            
        }

        private void kOpdater_Click(object sender, EventArgs e)
        {
            try
            {
                ctrKun.opdaterKunde(
                Convert.ToInt32(kId.Text),
                kNavn.Text,
                kAdresse.Text,
                kEmail.Text,
                kTlf.Text,
                kKøn.SelectedItem.ToString(),
                kFødselsdato.Text,
                kTæller.Text,
                kOprettet.Text,
                kMedlemstype.SelectedItem.ToString());
            }
            catch (Exception)
            {
                MessageBox.Show("En af dine værdier er forkerte");
            }
            
        }

        private void nuværendeDato_Click(object sender, EventArgs e)
        {
            kOprettet.Text = DateTime.Now.ToString();
        }

        private void kNulstil_Click(object sender, EventArgs e)
        {
            kId.Text = "";
            kNavn.Text = "";
            kAdresse.Text = "";
            kEmail.Text = "";
            kTlf.Text = "";
            kKøn.SelectedItem = 0;
            kFødselsdato.Text = "";
            kTæller.Text = "";
            kOprettet.Text = "";
            kMedlemstype.SelectedIndex = 0;

        }

        private void kOpret_Click(object sender, EventArgs e)
        {
            try
            {
                if(ctrKun.checkKunde(Convert.ToInt32(kTlf.Text))==false)
                {
                    ctrKun.opretKunde(
                    kNavn.Text,
                    kAdresse.Text,
                    kEmail.Text,
                    kTlf.Text,
                    kKøn.SelectedItem.ToString(),
                    kFødselsdato.Text,
                    kTæller.Text,
                    kOprettet.Text,
                    kMedlemstype.SelectedItem.ToString());
                    MessageBox.Show("Kunden blev oprettet");
                }
                else
                {
                    MessageBox.Show("Tlf nr er allerede brugt");
                }
                
            }
            catch (Exception)
            {
                MessageBox.Show("En af dine værdier er forkerte");
            }
            
        }

        private void kMedlemstype_SelectedIndexChanged(object sender, EventArgs e)
        {
            Rabat r = ctrRab.findRabatNavn(kMedlemstype.SelectedItem.ToString());
            rabatProcent.Text = r.RabatVærdi.ToString();
        }

        #endregion

        #region Rabat
        private void rOpret_Click(object sender, EventArgs e)
        {
            try
            {
                if(ctrRab.findRabatNavn(rNavn.Text)==null)
                {
                    ctrRab.opretRabat(rNavn.Text, int.Parse(rRabatværdi.Text));
                }
            }
            catch (Exception)
            {
                MessageBox.Show("En af dine værdier er forkerte");
            }
        }

        private void rOpdater_Click(object sender, EventArgs e)
        {
            try
            {
                ctrRab.updateRabat(int.Parse(rId.Text), rNavn.Text, int.Parse(rRabatværdi.Text));
            }
            catch (Exception)
            {
                MessageBox.Show("En af dine værdier er forkerte");
            }
        }

        private void rNulstil_Click(object sender, EventArgs e)
        {
            rNavn.Text = "";
            rId.Text = "";
            rRabatværdi.Text = "";
        }

        private void button6_Click(object sender, EventArgs e)
        {
            try
            {
                Rabat r = ctrRab.findRabatNavn(rRabatter.SelectedItem.ToString());
                rId.Text = r.Rabatid.ToString();
                rNavn.Text = r.Navn;
                rRabatværdi.Text = r.RabatVærdi.ToString();

            }
            catch (Exception)
            {
                MessageBox.Show("En af dine værdier er forkerte");
            }
        }

        private void rList_Click(object sender, EventArgs e)
        {
            try
            {
                foreach(Rabat r in ctrRab.alleRabatter())
                {
                    rRabatter.Items.AddRange(new object[] {
                    r.Navn.ToString()});
                }
               
            }
            catch (Exception)
            {
                
                throw;
            }
        }

        private void rRabatter_SelectedIndexChanged(object sender, EventArgs e)
        {
            Rabat r = ctrRab.findRabat(int.Parse(rRabatter.SelectedIndex.ToString())+1);
            rId.Text = r.Rabatid.ToString();
            rNavn.Text = r.Navn;
            rRabatværdi.Text = r.RabatVærdi.ToString();
        }

        #endregion

        #region Event
        private void btn_Opret_Event_Click(object sender, EventArgs e)
        {
            try
            {
                ctrEv.AddEvent(txt_Event_Opret_Navn.Text, decimal.Parse(txt_Opret_Pris.Text), txt_Opret_Beskrivelse.Text);
                txt_Event_Opret_Navn.Clear();
                txt_Opret_Pris.Clear();
                txt_Opret_Beskrivelse.Clear();
            }
            catch (Exception)
            {
                
            }
        }

        private void btn_Event_Rediger_Click(object sender, EventArgs e)
        {

        }

        private void btn_Event_Slet_Click(object sender, EventArgs e)
        {

        }

        private void btn_Event_Nulstil_Click(object sender, EventArgs e)
        {

        }

        private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
        {

        }

        #endregion

        #region Sale

        private void sRydKunde_Click(object sender, EventArgs e)
        {
            sKundeId.Text = "-";
            sKundeNavn.Text = "-";
            sKundenr.Text = "-";
        }

        private void book_Click(object sender, EventArgs e)
        {
            CtrSale ctrSal = new CtrSale();
            List<int> list = new List<int>();
            foreach (CheckBox s in salList)
            {
                if (s.Checked)
                {
                    list.Add(Convert.ToInt32(s.Name));
                }
            }
            ctrSal.sætOpstilling(Convert.ToInt32(sSalnr.Text), list);
        }

        private void button3_Click(object sender, EventArgs e)
        {
            try
            {
                CtrSale ctrSal = new CtrSale();
                List<Sæde> list = ctrSal.findAlleSæderFrame(Convert.ToInt32(sSalnr.Text));

                foreach (Sæde s in list)
                {
                    int ver = Convert.ToInt32(s.Plads.ToString().Substring(0, 1)) * 20;
                    int hor = Convert.ToInt32(s.Plads.ToString().Substring(1, 1)) * 40;
                    CheckBox sæ = new System.Windows.Forms.CheckBox();
                    this.Sale.Controls.Add(sæ);
                    sæ.AutoSize = true;
                    sæ.Location = new System.Drawing.Point(253 + hor, 124 + ver);
                    sæ.Name = s.Plads.ToString();
                    sæ.Size = new System.Drawing.Size(80, 17);
                    sæ.TabIndex = 15;
                    sæ.Text = s.Plads.ToString();
                    sæ.UseVisualStyleBackColor = true;
                    salList.Add(sæ);
                    //  MessageBox.Show(s.Plads.ToString());
                }
            }
            catch (Exception)
            {
                MessageBox.Show("Salen kunne ikke findes");
            }
            
        }

        private void button7_Click(object sender, EventArgs e)
        {
            CtrSale ctrSal = new CtrSale();
            List<Sæde> list = ctrSal.findAlleSæderFrameReset(Convert.ToInt32(sSalnr.Text));

            foreach (Sæde s in list)
            {
                int ver = Convert.ToInt32(s.Plads.ToString().Substring(0, 1)) * 20;
                int hor = Convert.ToInt32(s.Plads.ToString().Substring(1, 1)) * 40;
                CheckBox sæ = new System.Windows.Forms.CheckBox();
                this.Sale.Controls.Add(sæ);
                sæ.AutoSize = true;
                sæ.Location = new System.Drawing.Point(253 + hor, 124 + ver);
                sæ.Name = s.Plads.ToString();
                sæ.Size = new System.Drawing.Size(80, 17);
                sæ.TabIndex = 15;
                sæ.Text = s.Plads.ToString();
                sæ.UseVisualStyleBackColor = true;
                sæ.CheckedChanged += new System.EventHandler(this.checkBox1_CheckedChanged);
                salList.Add(sæ);
                //  MessageBox.Show(s.Plads.ToString());
            }
        }

        private void sNulstil_Click(object sender, EventArgs e)
        {
            foreach (CheckBox c in salList)
            {
                Sale.Controls.Remove(c);
            }
            salList.Clear();
        }

        private void sFindKunde_Click(object sender, EventArgs e)
        {
            try
            {
                Kunde k = ctrKun.findKunde(Convert.ToInt32(sKundenr.Text));
                sKundeId.Text = k.Kundeid.ToString();
                sKundeNavn.Text = k.Navn;
            }
            catch (Exception)
            {
                MessageBox.Show("En af dine værdier er forkerte");
            }
            
        }

        private List<CheckBox> salList = new List<CheckBox>();

        #endregion

        #region Kalender

        private void button5_Click(object sender, EventArgs e)
        {
            try
            {
                CtrFilm ctrf = new CtrFilm();
                Film f = ctrf.findFilm(comboBoxTit.Text);

                CtrForestilling ctrfor = new CtrForestilling();
                DateTime dato;
                dato = new DateTime();
                dato = dateTimePickerK.Value;

                string tidspunkt = "";

                if (dataGridView3.Rows.Count < 2)
                {
                    tidspunkt = "15:00";
                }
                else
                {
                    int sidsteForestilling = dataGridView3.Rows.Count - 2;
                    string s = dataGridView3.Rows[sidsteForestilling].Cells[1].Value.ToString();

                    Film f2 = ctrf.findFilm(dataGridView3.Rows[sidsteForestilling].Cells[2].Value.ToString());

                    string timer = s.Substring(0, 2);
                    string min = s.Substring(3, 2);

                    string filmtimer = f2.SpilleLængde.Substring(0, 2);
                    string filmmin = f2.SpilleLængde.Substring(9, 2);

                    int timerAlt = Convert.ToInt32(timer) + Convert.ToInt32(filmtimer);
                    int minAlt = Convert.ToInt32(min) + Convert.ToInt32(filmmin) + 30; //Rengøring = 30
                    while (minAlt >= 60)
                    {
                        timerAlt = timerAlt + 1;
                        minAlt = minAlt - 60;
                    }
                    if (minAlt < 10)
                    {
                        tidspunkt = timerAlt + ":0" + minAlt;
                    }
                    else
                    {
                        tidspunkt = timerAlt + ":" + minAlt;
                    }
                }
                if (Convert.ToInt32(tidspunkt.Substring(0, 2)) > 23)
                {
                    MessageBox.Show("Der kan ikke tilføjes film efter kl. 23");
                }
                else
                {
                    CtrEvent ctre = new CtrEvent();
                    ctrfor.addForestilling(tidspunkt, dato, ctre.findEvent(cbK.Text).Typeeventid, f.Filmid, Convert.ToInt32(comboBoxSal.Text));
                    fillDataKalender();
                    txt_kRen.Clear();

                    // Tilføjelse af sæder
                    int forestillingsid = ctrfor.selectMaxId();
                    int salid = Convert.ToInt32(comboBoxSal.Text);
                    ctrfor.opretSæder(forestillingsid, salid);
                }
            }
            catch (Exception)
            {
                MessageBox.Show("Filmen kunne ikke findes");
            }
        }


        public void fillDataKalender()
        {
            dataGridView3.Rows.Clear();
            CtrFilm ctrfilm = new CtrFilm();
            CtrForestilling ctrfor = new CtrForestilling();
            List<Forestilling> forlist = ctrfor.findAlleForestilling();
            if (!checkBoxAlle.Checked)
            {
                foreach (Forestilling f in forlist)
                {
                    if (f.Dato.Value.ToShortDateString() == dateTimePickerK.Value.ToShortDateString() && f.Saleid == Convert.ToInt32(comboBoxSal.Text))
                    {
                        int n = dataGridView3.Rows.Add();
                        dataGridView3.Rows[n].Cells[0].Value = f.Dato;
                        dataGridView3.Rows[n].Cells[1].Value = f.Tidspunkt;
                        dataGridView3.Rows[n].Cells[2].Value = ctrfilm.findFilmId((int)f.Fid).Titel;
                        dataGridView3.Rows[n].Cells[3].Value = ctrfilm.findFilmId((int)f.Fid).SpilleLængde;
                        dataGridView3.Rows[n].Cells[4].Value = "30 min";
                        dataGridView3.Rows[n].Cells[5].Value = f.Saleid;
                    }
                }
            }
            else
            {
                foreach (Forestilling f in forlist)
                {
                    int n = dataGridView3.Rows.Add();
                    dataGridView3.Rows[n].Cells[0].Value = f.Dato;
                    dataGridView3.Rows[n].Cells[1].Value = f.Tidspunkt;
                    dataGridView3.Rows[n].Cells[2].Value = ctrfilm.findFilmId((int)f.Fid).Titel;
                    dataGridView3.Rows[n].Cells[3].Value = ctrfilm.findFilmId((int)f.Fid).SpilleLængde;
                    dataGridView3.Rows[n].Cells[4].Value = "30 min";
                    dataGridView3.Rows[n].Cells[5].Value = f.Saleid;
                }
                dataGridView3.Sort(ColumnKdato , ListSortDirection.Ascending);
            }
        }

        private void dateTimePickerK_ValueChanged(object sender, EventArgs e)
        {
            fillDataKalender();
        }

        private void comboBoxSal_SelectedIndexChanged(object sender, EventArgs e)
        {
            fillDataKalender();
        }

        private void checkBoxAlle_CheckedChanged(object sender, EventArgs e)
        {
            fillDataKalender();
        }

        private void button11_Click(object sender, EventArgs e)
        {
            try
            {
                CtrForestilling ctrfof = new CtrForestilling();
                CtrFilm ctrfif = new CtrFilm();
                int filmid = ctrfif.findFilm(dataGridView3.CurrentRow.Cells[2].Value.ToString()).Filmid;
                DateTime dt = DateTime.ParseExact(dataGridView3.CurrentRow.Cells[0].Value.ToString(), "dd-MM-yyyy HH:mm:ss", null);
                int forid = ctrfof.findForestilling2(filmid, dt).Forestillingid;
                ctrfof.removeForestilling(forid);
                dataGridView3.Rows.Remove(dataGridView3.CurrentRow);
                MessageBox.Show("Forestillingen blev slettet");
            }
            catch (Exception)
            {
                MessageBox.Show("Der opstod en fejl");
            }
            
        }

        #endregion

        private void AddValues()
        {
            List<Rabat> list = ctrRab.alleRabatter();
            foreach (Rabat r in list)
            {
                kMedlemstype.Items.Add(r.Navn);
                rRabatter.Items.Add(r.Navn);
            }

            CtrFilm ctrFil=new CtrFilm();
            List<string> slist = ctrFil.findAlleTitel();
            foreach(string s in slist)
            {
                filmCollection.Items.Add(s);
            }

            CtrEvent ctre = new CtrEvent();
            List<Typeevent> events = ctre.findAlleEvent();
            foreach (Typeevent te in events)
            {
                cbK.Items.Add(te.Navn);
            }
            if (events.Count > 0)
            {
                cbK.SelectedIndex = 0;
            }
            CtrSale ctrs = new CtrSale();
            List<Sale> sales = ctrs.findAlleSale();
            foreach (Sale s in sales)
            {
                comboBoxSal.Items.Add(s.Saleid);
            }
            if (sales.Count > 0)
            {
                comboBoxSal.SelectedIndex = 0;
            }
            fillFilmOversigtData();
            fillDataKalender();

        }

        private void Tabs_SelectedIndexChanged(object sender, EventArgs e)
        {
            comboBoxTit.Items.Clear();
            CtrFilm ctrfilm = new CtrFilm();
            List<Film> films = ctrfilm.findAlleFilm();
            foreach (Film f in films)
            {
                comboBoxTit.Items.Add(f.Titel);
            }
            if (films.Count > 0)
            {
                comboBoxTit.SelectedIndex = 0;
            }
        }

        private void checkBox1_CheckedChanged(object sender, EventArgs e)
        {
            // Do something fancy
        }

        
    }
}